package main

import "fmt"

func twoSum(nums []int, target int) []int {
    // 创建一个 map 用于存储数组元素及其下标
    numMap := make(map[int]int)

    // 遍历数组
    for i, num := range nums {
        // 计算需要的另一个数
        complement := target - num

        // 检查 complement 是否在 map 中
        if index, ok := numMap[complement]; ok {
            // 如果找到，返回两个数的下标
            return []int{index, i}
        }

        // 将当前数及其下标存入 map
        numMap[num] = i
    }

    // 如果没有找到，返回空切片（根据题意，这种情况不会发生）
    return nil
}

func main() {
    // 示例输入
    nums := []int{2, 7, 11, 15}
    target := 9

    // 调用函数
    result := twoSum(nums, target)

    // 输出结果
    fmt.Println(result) // 输出: [0 1]
}